Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра АСУ
Лабораторна робота №7
Тема:Використання com-об’єктів
Написав: ст. гр.. КН-22
Прийняв: Скрибайло-Леськів Д.Ю
Львів 2011
Лабораторна робота №7
Теоретичні основи
COM (Component Object Model) — платформа компонентно-орієнтованого програмування розроблена в 1993 році компанією Microsoft; дозволяє використання міжпроцесної взаємодії (inter-process communication) та динамічного створення об'єктів у будь-якій мові програмування, що підтримує технологію. Використовується переважно у ОС Віндовз, хоча була реалізована на декількох платформах.
Основним поняттям, яким оперує технологія COM, є COM-компонент. Програми, побудовані на технології COM фактично не є автономними програмами, а представляють собою набір взаємодіючих між собою COM-компонентів. Кожен компонент має унікальний ідентифікатор GUID і може одночасно використовуватися багатьма програмами. Компоненти взаємодіють між собою через COM-інтерфейси — набори абстрактних функцій і властивостей. Кожен COM-компонент повинен підтримувати стандартний інтерфейс «IUnknown», який об'єднує базові засоби для роботи з компонентом.
Windows API об'єднує базові функції, що дозволяють використовувати COM-компоненти. Бібліотека MFC і, особливо, ATL/WTL забезпечують більш гнучкі і зручні засоби для роботи з COM.
Основним поняттям, яким оперує технологія COM, є COM-компонент. Програми, побудовані на технології COM, фактично не є автономними програмами, а є набором COM-компонентів, що взаємодіють між собою. Кожен компонент має унікальний ідентифікатор (GUID) і може одночасно використовуватися багатьма програмами. Компонент взаємодіє з іншими програмами через COM-інтерфейси — набори абстрактних функцій і властивостей. Кожен COM-компонент має, як мінімум, підтримувати стандартний інтерфейс «IUnknown», який надає базові засоби для роботи з компонентом.
Windows API надає базові функції, що дозволяють використовувати COM-компоненти. Бібліотеки MFC і, особливо, ATL/WTL надають набагато гнучкіші і зручніші засоби для роботи з COM. Бібліотека ATL від Майкрософт досі лишається найпопулярнішим засобом створення COM-компонентів. Але, часто, COM-розробка залишається ще досить складною справою, програмістам доводиться вручну виконувати багато рутинних завдань, пов'язаних з COM (особливо це помітно у разі розробки на C++). Згодом (у технологіях COM+ і особливо .NET) Майкрософт спробував спростити завдання розробки COM-компонентів.
Суттю даної технології є те, що програми будуються з компонент, які складаються з об'єктів. Саме по собі ця обставина не є останньою новиною в області програмобудуванні - модульна архітектура і об'єктно-орієнтований підхід до побудови програм давно є визнаними стандартами de facto. Новиною є те, що є цими компонентами та об'єктами - ними є безпосередньо виконуваний двійковий код. Так-так, не "включаються вихідні тексти" компільовані спільно з проектом, не "бібліотеки стандартних програм", що приєднуються лінкером, а безпосередньо виконуючі файли, які ніяк не треба "зв'язувати" зі своїм проектом - їх достатньо зареєструвати в операційній системі і вони будуть доступні будь-якій програма яка виконується на даній машині. Тобто їх використання у своїй програмі проводиться "без використання операцій складання модуля".
Така технологія називається "динамічна завантаження", вона давно відома і її переваги очевидні. А модулі, які дозволяють завантажувати себе таким чином, називаються DLL. І у системі, що іменується Microsoft Windows така технологія відома від самого її народження ... А DLL і є той самий "двійковий виконуючий модуль", який може бути приєднаний до програми лише на стадії її виконання.
Виходить, якщо весь проект розподілити за кількома динамічним бібліотекам, то вийдуть "виконавчі компоненти"?
Не зовсім ... Дійсно, найважливіша ознака "компонентного" вже з'явиться – виконуючу
програму можна буде збирати з окремих частин без операцій складання модуля. Але ось DLL - не к...